package com.electromagnetic.industry.software.manage.service;

import java.util.List;
import java.util.Map;

public interface PermissionService {

    /**
     * 用户对个人数据拥有所有权限
     *
     * @return
     */
    Map<String, Boolean> getPersonalPermission();

    /**
     * 查询当前用户在当前目录的功能权限
     *
     * @param userId
     * @param id
     * @return
     */
    Map<String, Boolean> getUserPermission(String userId, String id, Boolean includeView);

    /**
     * 获取当前用户有权限访问的目录id
     *
     * @return
     */
    List<String> getAccessibleTree();

    /**
     * 获得当前角色权限
     *
     * @param roleId
     * @param fileId
     * @return
     */
    List<String> getPermissionCodes(String roleId, String fileId);

    /**
     * 用户权限列表 转换为 哈希
     *
     * @param permissionCodes
     * @return
     */
    Map<String, Boolean> transToMap(List<String> permissionCodes, Boolean includeView);

    /**
     * 过滤有导出权限的文件id
     *
     * @param ids
     */
    Map<String, Boolean> filterExportIds(String[] ids);

    /**
     * 同步权限
     */
    void syncPermissions(String prjId);

    /**
     * 判断用户有无权限
     *
     * @param permissionCode 权限
     * @param userId         用户编码
     * @param fileId         文件编码
     * @return
     */
    boolean isPermitted(String permissionCode, String userId, String fileId);
}
